package com.zjsru.plan2025.oneday;

/**
 * 2716. 最小化字符串长度
 *
 * @Author: cookLee
 * @Date: 2025-03-31
 */
public class MinimizedStringLength {

    /**
     * 主
     * \
     * 输入：s = "aaabc"
     * 输出：3
     * 解释：在这个示例中，s 等于 "aaabc" 。我们可以选择位于下标 1 处的字符 'a' 开始。接着删除下标 1 左侧最近的那个 'a'（位于下标 0）以及下标 1 右侧最近的那个 'a'（位于下标 2）。执行操作后，字符串变为 "abc" 。继续对字符串执行任何操作都不会改变其长度。因此，最小化字符串的长度是 3 。
     * \
     * 输入：s = "cbbd"
     * 输出：3
     * 解释：我们可以选择位于下标 1 处的字符 'b' 开始。下标 1 左侧不存在字符 'b' ，但右侧存在一个字符 'b'（位于下标 2），所以会删除位于下标 2 的字符 'b' 。执行操作后，字符串变为 "cbd" 。继续对字符串执行任何操作都不会改变其长度。因此，最小化字符串的长度是 3 。
     * \
     *
     * @param args args
     */
    public static void main(String[] args) {
        MinimizedStringLength minimizedStringLength = new MinimizedStringLength();
        System.out.println(minimizedStringLength.minimizedStringLength("aaabc"));
    }

    public int minimizedStringLength(String s) {
        int count = 0;
        int[] counts = new int[26];
        for (char c : s.toCharArray()) {
            if (counts[c - 'a'] == 0) {
                counts[c - 'a']++;
                count++;
            }
        }
        return count;
    }

}
